﻿using System.ComponentModel.DataAnnotations.Schema;
using PmSadis.Models.Abstract;
using System;
using System.ComponentModel.DataAnnotations;

namespace PmSadis.Models.Abstract
{
    /// <summary>
    /// Контракт
    /// </summary>
    [MetadataType(typeof(ContractorMetadata))]
    public abstract class Contractor : IRedactModel
    {
        /// <summary>
        /// Наименование подрядчика
        /// </summary>
        public string ContractorName { get; set; }

        /// <summary>
        /// Дата создания
        /// </summary>
        public DateTime DateCreate { get; set; }

        /// <summary>
        /// Дата последнего редактирования
        /// </summary>
        public DateTime DateUpdate { get; set; }

        /// <summary>
        /// Фамилия
        /// </summary>
        public string Surname { get; set; }

        /// <summary>
        /// Имя
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Отчество
        /// </summary>
        public string Patronymic { get; set; }

        /// <summary>
        /// Отдел
        /// </summary>
        public string Department { get; set; }

        /// <summary>
        /// Должность
        /// </summary>
        public string Post { get; set; }

        /// <summary>
        /// НДС
        /// </summary>
        public double? Nds { get; set; }

        /// <summary>
        /// Идентификатор связанного пользователя
        /// </summary>
        public int UserId { get; set; }
    }

    class ContractorMetadata
    {
        /// <summary>
        /// Наименование подрядчика
        /// </summary>
        [Column("CONTRACTOR_NAME")]
        [Required]
        public string ContractorName { get; set; }

        /// <summary>
        /// Дата создания
        /// </summary>
        [Column("DATE_CREATE")]
        public DateTime DateCreate { get; set; }

        /// <summary>
        /// Дата последнего редактирования
        /// </summary>
        [Column("DATE_UPDATE")]
        public DateTime DateUpdate { get; set; }

        /// <summary>
        /// Фамилия
        /// </summary>
        [Column("SURNAME")]
        public string Surname { get; set; }

        /// <summary>
        /// Имя
        /// </summary>
        [Column("NAME")]
        public string Name { get; set; }

        /// <summary>
        /// Отчество
        /// </summary>
        [Column("PATRONYMIC")]
        public string Patronymic { get; set; }

        /// <summary>
        /// Отдел
        /// </summary>
        [Column("DEPARTMENT")]
        public string Department { get; set; }

        /// <summary>
        /// Должность
        /// </summary>
        [Column("POST")]
        public string Post { get; set; }

        /// <summary>
        /// НДС
        /// </summary>
        [Column("NDS")]
        public double? Nds { get; set; }

        /// <summary>
        /// Идентификатор связанного пользователя
        /// </summary>
        [Column("USER_ID")]
        public int UserId { get; set; }
    }
}
